/**
 * 自定义 404 错误类
 */
class NotFoundError extends Error {
    constructor(message) {
        super(message)
        this.name = "NotFoundError"
    }
}

/**
 * 请求成功
 * @param res
 * @param message
 * @param data
 * @param code
 */
function success(res, message, data = {}, code = 200) {
    res.status(code).json({
        status: true,
        message,
        data,
    })
}

/**
 * 请求失败
 * @param res
 * @param error
 */
function failure(res, error) {
    if (error.name === "SequelizeValidationError") {
        const errors = error.errors.map((e) => e.message)
        return res.status(400).json({
            status: false,
            message: "请求参数错误",
            errors,
        })
    }

    if (error.name === "NotFoundError") {
        return res.status(404).json({
            status: false,
            message: "资源不存在",
            errors: [error.message],
        })
    }

    res.status(500).json({
        status: false,
        message: "服务器错误",
        errors: [error.message],
    })
}

module.exports = {
    NotFoundError,
    success,
    failure,
}
